package controlmercancias.remoto.servidoractualizaciones;

import controlmercancias.configuracion.Configuracion;
import controlmercancias.configuracion.GestorConfiguracion;
import controlmercancias.datos.AccesoDatosActualizacion;
import controlmercancias.datos.AccesoDatosActualizacionBase;
import controlmercancias.gui.actualizaciones.ActualizacionesServerGUI;
import java.io.IOException;
import java.net.ServerSocket;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;

/**
 *
 * @author Hasier
 */
public class ServidorActualizacionesDemon {

    private static AccesoDatosActualizacionBase ad;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                try {
                    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                        if ("Nimbus".equals(info.getName())) {
                            UIManager.setLookAndFeel(info.getClassName());
                            break;
                        }
                    }
                } catch (Exception e) {
                }
                ActualizacionesServerGUI sg = new ActualizacionesServerGUI();
                sg.setVisible(true);
            }
        });
        init();
        try {
            ServerSocket ss = new ServerSocket(6786);
            System.out.println("Servidor de actualizaciones activo y esperando...");
            for (;;) {
                ServidorActualizaciones s = new ServidorActualizaciones(ss.accept());
                new Thread(s).start();
            }
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }

    private static void init() {
        GestorConfiguracion.cargarConfiguracion("actualizacionesBD/configuracionBD.properties");
        AccesoDatosActualizacion.inicializarParametrosConexion(Configuracion.getInstance());
        ad = new AccesoDatosActualizacion();
        ad.init();
    }

    public static AccesoDatosActualizacionBase getAccesoDatos() {
        return ad;
    }
}
